package com.trade.dao;

import com.trade.data.*;
import com.trade.data.type.*;
import java.util.*;
import com.trade.data.calculation.*;

import org.drools.runtime.process.ProcessInstance;

public interface IDroolFlowDAO  {


	/**
	* This method used to add object in Drools Working memory.
	*/
	public void insertObject(Object object, IntervalTimeTypes intervalTimeTypes)throws Exception;

	public void insertObject(Object object)throws Exception;

	public ProcessInstance startProcess(String processName);

	public ProcessInstance startTradeFlowProcess(ProcessFilterVO filterVO);

	public void fireAllRules();

	/**
	*	This method return objects from Drool Engine.
	*/

	public List<EquityIntradayDataVO> getEquityIntradayData(Object objects[], IntervalTimeTypes intervalTimeTypes);

	public List<MovingAverageValuesVO> getMovingAverageValues(Object objects[], IntervalTimeTypes intervalTimeTypes);


	public Double getRSIAverageGain(Object objects[], IntervalTimeTypes intervalTimeTypes);
	public Double getRSIAverageLoss(Object objects[], IntervalTimeTypes intervalTimeTypes);


	public List<RSIValuesVO> getRSIValues(Object objects[], IntervalTimeTypes intervalTimeTypes);



	public List<CCIValuesVO> getCCIValues(Object objects[], IntervalTimeTypes intervalTimeTypes);



	public Double getMACDAverage(Object objects[], IntervalTimeTypes intervalTimeTypes);

	public List<MACDValuesVO> getMACDValues(Object objects[], IntervalTimeTypes intervalTimeTypes);

	public List<BollingerBandValuesVO> getBollingerBandValues(Object objects[], IntervalTimeTypes intervalTimeTypes);

}